Transmission of multi-media content across a packet network often requires that the content packets be delivered in sequence and in a timely fashion. Packets of a content stream may experience various delay and arrive at the receiving end in a different order than they were transmitted. When that happens, the original content stream must be reconstructed at the receiving end for the transmission to have any meaning. Reconstructing the stream may involve a waiting period during which packets may be received and original transmission order may be restored. However, waiting too long will result in poor quality of service, so some approaches discard packets that are ‘too late.’ Different protocols address these issues in different ways.
Generally, the transmitting end assigns a sequence number to each outgoing packet. With a distributed network, such as the Internet, where each packet could possibly take a different route with a different number of hops between the transmitting and receiving ends, the packets may arrive out of order or are even lost at an intermediate hop. The receiving end uses the sequence numbers to reconstruct the data stream and provides it to the end user in sequence.
Examples of protocols in which these sequence numbers are used include the Real-time Transport Protocol (RTP) and the General Packet Radio Service (GPRS) Tunneling Protocol (GTP). GPRS is a wireless standard used to provide wireless access to packet networks. GTP provides encapsulation of all the data network protocols to ensure security in the backbone network and to simplify the routing mechanism and the delivery of data over the GPRS network.
Both RTP and GTP use sequence numbers at the transmitting end, but handle the re-sequencing tasks differently on the receiving end. In RTP, individual applications perform the re-sequencing and timely deliver of packets to the processing component. In GTP, the re-sequencing and timely delivery occurs inside the GTP tunnel, without any knowledge of user applications.